package com.yisa.person.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class PersonInfo implements Serializable {

    /**
     * 证件类型，必须存在
     * 目前暂定范围：111~999
     * 其中111、112为居民身份证和临时身份证
     * 参考标准：GA/T 517-200
     */
    private Integer id_type;

    /**
     * 证件号码，必须存在
     */
    private String id_number;

    /**
     * 姓名，不存在默认为''
     */
    private String name;

    /**
     * 性别，不存在默认为0
     * 只能是0,1,2这3个值
     * 1 - 男，2 - 女
     */
    private Integer gender;

    /**
     * 民族，不存在默认为''
     * 参考标准：GB 3304-1991
     */
    private String nation;

    /**
     * 生日，8位数字，例如：19980323
     * 默认不存在或格式错误时使用身份证号来计算
     * 如果证件不是身份证，则最终使用0
     */
    private Long birthday;

    /**
     * 宗教信仰，不存在默认为: '00'
     * 参考标准：GA 214.12-2004
     */
    private String faith;

    /**
     * 婚姻状况，不存在默认为：'90'
     * 参考标准：GB/T 2261.2-2003
     */
    private String marital;

    /**
     * 学历，默认为：'90'
     * GB/T 4658-2006
     */
    private String education;

    /**
     * 户籍地6位行政区划编码，不存在默认是0
     */
    private Integer household_code;

    /**
     *  户籍地详细地址，默认: ''
     */
    private String household_address;

    /**
     * 居住地6位行政区划编码，不存在默认是0
     */
    private Integer residential_code;

    /**
     * 居住地详细地址，默认: ''
     */
    private String residential_address;

    /**
     * 籍贯地6位行政区划编码，不存在默认是0
     */
    private Integer native_place_code;

    /**
     * 籍贯地详细地址，默认: ''
     */
    private String native_place_address;

    /**
     * 户号，默认：''
     * 如果户号存在并且与户主关系存在，同时开启入clickhouse的开关，那么数据会写入亲属关系离线分析表中
     */
    private String residence_number;

    /**
     * 与户主关系，默认：''
     * 如果这个字段和上一个字段都存在，并且开启入clickhouse的开关，那么数据会写入亲属关系离线分析表中
     */
    private String household_relation;

    /**
     * 从业单位名称，默认：''
     */
    private String work_unit;

    /**
     * 人口状态，默认: 0
     * 数值范围：0~255
     */
    private Integer population_status;

    /**
     * 照片列表
     */
    private List<Photo> photos;

    /**
     * 标签列表
     */
    private List<Label> labels;

    /**
     * 数据来源，数值范围0-255
     * 默认：6，按照字典默认设置成常住人口库导入
     */
    private Integer source;

    /**
     * 国籍，默认为'中国'
     */
    private String country;

    /**
     * 外文姓名，默认为：''
     */
    private String foreign_name;

    /**
     * 消息执行的处理逻辑
     * insert: 不检测直接插入操作，如果文档存在会报错
     * update: 不检测直接更新操作，如果文档不存在会报错
     * replace: 对文档按照当前数据进行替换，如果不存在会报错
     * 其他值或字段不存在则执行默认行为，自动检测文档的存在性
     */
    private String action;


}
